import {defineConfig} from 'vite'
import react from '@vitejs/plugin-react'
import typescript from '@rollup/plugin-typescript'
// 想在ts使用node的依赖, 需要安装 @types/node
import { resolve } from "node:path";

const resolvePath = (str: string) => resolve(__dirname, str);

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [react()],
  resolve: {
    alias: {
      "@": resolve(__dirname, "./src"),
    },
  },
  // 打包编译配置
  build: {
    rollupOptions: {
      // 请确保外部化那些你的库中不需要的依赖
      external: ["react", "react-dom"],
      output: {
        // 在 UMD 构建模式下为这些外部化的依赖提供一个全局变量
        globals: {
          react: "react",
          "react-dom": "react-dom",
        },
      },
      plugins: [
        typescript({
          target: "es2015", // 这里指定编译到的版本，
          rootDir: resolvePath("src/"),
          declaration: true,
          declarationDir: resolvePath("dist"),
          exclude: resolvePath("node_modules/**"),
          allowSyntheticDefaultImports: true,
        }),
      ],
    },
    lib: {
      // 打包入口文件, 使用时从入口进行寻找依赖
      entry: resolvePath("src/index.ts"),
      name: "mal-react-components",
      // 打包后文件名 format表示不同的规范(commonjs之类的)
      // 如果打包成 UMD 格式，文件名可能是 mal-vue3-components.umd.js。
      // 如果打包成 ES Module 格式，文件名可能是 mal-vue3-components.es.js
      fileName: format => `mal-react-components.${format}.js`,
    },
  },
})